import axios from 'axios'
import { baseURL } from '../config'
import router from "../router";

export const Axios = axios.create({
    timeout: 10 * 1000,
    baseURL : baseURL
})

// 请求拦截器
Axios.interceptors.request.use(config =>{
    // 检查localStorage中是否含有token，有的话就将token加入到请求头之中
    if (localStorage.token){
        config.headers.Authorization = localStorage.getItem("token")
    }
    return config;
    // 报错就返回promise对象，交给axios执行回调函数
}, error => {
    return Promise.reject(error)
})

// 响应拦截器
Axios.interceptors.response.use(res => {
    if (res.headers.Authorization){
        localStorage.setItem("token", res.headers.Authorization);
    }
    if (res.data.status !== 0){
        console.log("请求失败");
        return Promise.reject(res)
    }
    return res;
}, error => {
    // 未登录状态，没有携带token或者token过期
    if (error.response.status === 401 || error.response.status === 403){
        router.push("/login")
    }
    return Promise.reject(error.response)
})

export default {
    // 导出install方法，就可以在main.js中使用Vue.use()全局引入
    install: (Vue) => {
        Object.defineProperty(Vue.prototype, '$Axios', {
            value: Axios
        })
    }
}